package com.ipartek.pruebas.capitulo8;

import com.ipartek.pruebas.bean.AlumnoP5;

/**
 * Clase para probar el funcionamiento del paso de parametros por referencia y valor
 * @author practicas5
 *
 */
public class PruebaMetodosP6 {

	/**
	 * Metodo para el ejemplo de "paso por valor", el cual muestra por pantalla el parametro incrementando su valor en 1
	 * @param valor a mostrar por pantalla
	 */
	static void incrementarValor(int valor){
		valor++;
		System.out.println("Incrementamos en 1 la edad: " + (valor));
	}
	/**
	 * Metodo para el ejemplo de "paso por REFERENCIA"
	 * el cual muestra por pantalla la edad del objeto AlumnoP5 incrementando su edad en 1
	 * @param alumno instancia de la clase AlumnoP5
	 */
	static void incrementarReferencia(AlumnoP5 alumno){
		try{
			int edad = alumno.getEdad();
			alumno.setEdad(edad+1);
			System.out.println(alumno.getEdad());
		}catch (Exception e){
			e.printStackTrace();
		}
	}
	/**
	 * Metodo main para probar la clase
	 * @param args no vamos a pasar ningun parametro
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int edad = 17;
		System.out.println("Nos debe mostrar la edad de 17 = " + edad);
		incrementarValor (edad);
		//Como pasamos el parametro edad como valor, no debe cambiar su valor
		System.out.println("Nos debe mostrar la edad de 17 = " + edad);
		
		AlumnoP5 p = new AlumnoP5("","","",17,0,"");
		System.out.println(p.toString());
		incrementarReferencia(p);
		//Como pasamos el parametro edad como REFERENCIA, DEBE cambiar su valor
		System.out.println(p.toString());
		
		//Vamos a probar a crear una variable intermedia para la instancia <AlumnoP5>p
		AlumnoP5 p2 = p;
		incrementarReferencia(p);
		System.out.println(p2.toString());
		
		//vamos a clonar el objeto para que no nos cambie el valor
	
		AlumnoP5 pclone =(AlumnoP5) p.clone();
		incrementarReferencia(p);
		System.out.println(pclone);
		}
}